home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / OPAMP.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-01-29  |  6.7 KB  |  222 lines

  1. 10  'OPAMP - Operational Amplifiers - 03 AUG 95 rev. 29 SEP 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  CLS:KEY OFF
  4. 40  COLOR 7,0,1
  5. 50  DIM R(25)
  6. 60  PI=3.14159
  7. 70  E$=STRING$(79,32)
  8. 80  UL$=STRING$(80,205)
  9. 90  U$="######,###"
  10. 100  V$="######,###.#"
  11. 110  W$="######,###.###"
  12. 120  '
  13. 130  DATA 10,11,12,13,15,16,18,20,22,24,27,30,33,36,39
  14. 140  DATA 43,47,51,56,62,68,75,82,91,100
  15. 150  FOR Z=0 TO 24:READ R(Z):NEXT Z
  16. 160  GOTO 310
  17. 170  '
  18. 180  '.....find nearest standard resistor
  19. 190  M=0.1              'multiplier
  20. 200  RX=ABS(RX)
  21. 210  FOR Z=1 TO 24
  22. 220  RLO=R(Z-1)*M      'low resistor
  23. 230  RHI=R(Z)*M        'high resistor
  24. 240  IF RX=RLO THEN 290
  25. 250  IF RX>RLO AND RX<RHI THEN 260 ELSE 280
  26. 260  IF RX<(RLO+RHI)/2 THEN RX=RLO ELSE RX=RHI
  27. 270  GOTO 290
  28. 280  NEXT Z:M=M*10:GOTO 210
  29. 290  RETURN
  30. 300  '
  31. 310  '.....start................................
  32. 320  COLOR 15,2
  33. 330  PRINT " OP AMPS (Operational Amplifiers)";
  34. 340  PRINT TAB(57);"by George Murphy VE3ERP ";
  35. 350  COLOR 1,0:PRINT STRING$(80,223);
  36. 360  COLOR 7,0
  37. 370  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  38. 380  T=1:GOSUB 630    'diagram 1
  39. 390  T=26:GOSUB 790   'diagram 2
  40. 400  T=55:GOSUB 950   'diagram 3
  41. 410  COLOR 0,7
  42. 420  FOR Z=3 TO 12:LOCATE Z,25:PRINT "CALL":LOCATE Z,54:PRINT"CALL":NEXT Z
  43. 430  COLOR 7,0
  44. 440  LOCATE 13:PRINT UL$;
  45. 450  PRINT " Ref. ";CHR$(34);"Programs for Electronic Circuit Design";CHR$(34);
  46. 460  PRINT " by David Leithauser,"
  47. 470  PRINT "       Radio Shack Cat.No. 62-1054, pages 77-84"
  48. 480  PRINT UL$;
  49. 490  PRINT " Press one of the numbers in < > above ";
  50. 500  PRINT "to select basic Op-Amp circuit"
  51. 510  PRINT "  - or -"
  52. 520  PRINT " Press 0 to EXIT"
  53. 530  PRINT UL$;
  54. 540  Z$=INKEY$
  55. 550  IF Z$="0"THEN CLS:RUN EX$
  56. 560  IF VAL(Z$)>=1 AND VAL(Z$)<=3 THEN 580
  57. 570  GOTO 540
  58. 580  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  59. 590  IF Z$="1"THEN T=29:GOSUB 630:GOTO 1110
  60. 600  IF Z$="2"THEN T=27:GOSUB 790:GOTO 1410
  61. 610  IF Z$="3"THEN T=27:GOSUB 950:GOTO 1790
  62. 620  '
  63. 630  '.....inverting
  64. 640  COLOR 15,2
  65. 650  LOCATE  3,T:PRINT "  <1> INVERTING OP-AMP   "
  66. 660  LOCATE  4,T:PRINT " without input capacitor "
  67. 670  COLOR 0,7
  68. 680  LOCATE  5,T:PRINT "              R2         "
  69. 690  LOCATE  6,T:PRINT "           VARPTR\/\/\COLOR       "
  70. 700  LOCATE  7,T:PRINT "       R1  CALLVARPTRSOUNDSOUNDSOUNDCOLORCALL       "
  71. 710  LOCATE  8,T:PRINT " in SOUND\/\/\SOUNDMOTOR<0xB4!>-  CALLCALL       "
  72. 720  LOCATE  9,T:PRINT "            CALL   BLOADMOTORSOUND out  "
  73. 730  LOCATE 10,T:PRINT "   VARPTRSOUND\/\/\SOUNDSOUND<0xB4!>+  CALL        "
  74. 740  LOCATE 11,T:PRINT "   CALL   R3   CLSSOUNDSOUNDSOUND'        "
  75. 750  LOCATE 12,T:PRINT " \\MOTOR\\grnd               "
  76. 760  COLOR 7,0
  77. 770  RETURN
  78. 780  '
  79. 790  '.....inverting with input capacitor
  80. 800  COLOR 15,2
  81. 810  LOCATE  3,T:PRINT "    <2> INVERTING OP-AMP     "
  82. 820  LOCATE  4,T:PRINT "    with input capacitor     "
  83. 830  COLOR 0,7
  84. 840  LOCATE  5,T:PRINT "                  R2         "
  85. 850  LOCATE  6,T:PRINT "               VARPTR\/\/\COLOR       "
  86. 860  LOCATE  7,T:PRINT "     C1    R1  CALLVARPTRSOUNDSOUNDSOUNDCOLORCALL       "
  87. 870  LOCATE  8,T:PRINT " in SOUNDSOUNDUSINGSOUNDSOUND\/\/\SOUNDMOTOR<0xB4!>-  CALLCALL       "
  88. 880  LOCATE  9,T:PRINT "                CALL   BLOADMOTORSOUND out  "
  89. 890  LOCATE 10,T:PRINT "       VARPTRSOUND\/\/\SOUNDSOUND<0xB4!>+  CALL        "
  90. 900  LOCATE 11,T:PRINT "       CALL   R3   CLSSOUNDSOUNDSOUND'        "
  91. 910  LOCATE 12,T:PRINT "     \\MOTOR\\grnd               "
  92. 920  COLOR 7,0
  93. 930  RETURN
  94. 940  '
  95. 950  '.....non-inverting
  96. 960  COLOR 15,2
  97. 970  LOCATE  3,T:PRINT " <3> NON-INVERTING OP-AMP ";
  98. 980  LOCATE  4,T:PRINT "                          ";
  99. 990  COLOR 0,7
  100. 1000  LOCATE  5,T:PRINT "                          ";
  101. 1010  LOCATE  6,T:PRINT "              VARPTRSOUNDSOUNDSOUNDCOLOR       ";
  102. 1020  LOCATE  7,T:PRINT " in SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB4!>+  CALL       ";
  103. 1030  LOCATE  8,T:PRINT "              CALL   BLOADBSAVESOUND out ";
  104. 1040  LOCATE  9,T:PRINT "     VARPTRSOUND\/\/\SOUNDBSAVE<0xB4!>-  CALLCALL      ";
  105. 1050  LOCATE 10,T:PRINT "     CALL   R1  CALLCLSSOUNDSOUNDSOUND'CALL      ";
  106. 1060  LOCATE 11,T:PRINT "     CALL       CLS\/\/\'      ";
  107. 1070  LOCATE 12,T:PRINT "   \\MOTOR\\grnd    R2        ";
  108. 1080  COLOR 7,0
  109. 1090  RETURN
  110. 1100  '
  111. 1110  '.....inverting, without input capacitor
  112. 1120  LOCATE 13:PRINT UL$;
  113. 1130  IF RS THEN 1150
  114. 1140  INPUT "ENTER: Source resistance in ohms...................";RS:GOSUB 1230
  115. 1150  IF R1 THEN 1170
  116. 1160  INPUT "ENTER: Value of R1 in ohms.........................";R1:GOSUB 1230
  117. 1170  IF R2 THEN 1190
  118. 1180  INPUT "ENTER: Value of R2 in ohms.........................";R2:GOSUB 1230
  119. 1190  IF G THEN 1210
  120. 1200  INPUT "ENTER: Desired amplifier gain......................";G:GOSUB 1230
  121. 1210  VIEW PRINT 14 TO 24:CLS:LOCATE 14:GOTO 1130
  122. 1220  '
  123. 1230  G=ABS(G)
  124. 1240  FOR Z=1 TO 4
  125. 1250  IF RS=0 AND R1*R2*G<>0 THEN RS=R2/G-R1
  126. 1260  IF R1=0 AND RS*R2*G<>0 THEN R1=R2/G-RS:  RX=R1:GOSUB 180:R1=RX
  127. 1270  IF R2=0 AND RS*R1*G<>0 THEN R2=G*(RS+R1):RX=R2:GOSUB 180:R2=RX
  128. 1280  IF G=0 AND RS*R1*R2<>0 THEN G=R2/(RS+R1)
  129. 1290  IF RS*R1*R2*G THEN 1320
  130. 1300  NEXT Z
  131. 1310  RETURN
  132. 1320  VIEW PRINT 14 TO 24:CLS:VIEW PRINT:LOCATE 14
  133. 1330  R3=(RS+R1)*R2/(RS+R1+R2):RX=R3:GOSUB 180:R3=RX
  134. 1340  PRINT " Source resistance...........";USING U$;RS;:PRINT " -"
  135. 1350  PRINT " R1..........................";USING U$;R1;:PRINT " -"
  136. 1360  PRINT " R2..........................";USING U$;R2;:PRINT " -"
  137. 1370  PRINT " R3..........................";USING U$;R3;:PRINT " -"
  138. 1380  PRINT " Amplifier gain..............";USING V$;-G
  139. 1390  GOTO 2010
  140. 1400  '
  141. 1410  '.....inverting, with input capacitor
  142. 1420  LOCATE 13:PRINT UL$;
  143. 1430  IF RS THEN 1470
  144. 1440  INPUT "ENTER: Source resistance in ohms...................";RS
  145. 1450  IF RS THEN GOSUB 1590:GOTO 1470
  146. 1460  LOCATE CSRLIN-1:PRINT E$:LOCATE CSRLIN -1:GOTO 1440
  147. 1470  IF R1 THEN 1490
  148. 1480  INPUT "ENTER: Value of R1 in ohms.........................";R1:GOSUB 1590
  149. 1490  IF R2 THEN 1510
  150. 1500  INPUT "ENTER: Value of R2 in ohms.........................";R2:GOSUB 1590
  151. 1510  IF C THEN 1540
  152. 1520  INPUT "ENTER: Value of C1 in microfarads (mF).............";C
  153. 1530  C=C/10^6:GOSUB 1590   'capacitance in farads
  154. 1540  IF F THEN 1570
  155. 1550  INPUT "ENTER: Cutoff frequency (kHz)......................";F
  156. 1560  F=F*10^3:GOSUB 1590   'frequency in hertz
  157. 1570  VIEW PRINT 14 TO 24:CLS:VIEW PRINT:LOCATE 14:GOTO 1430
  158. 1580  '
  159. 1590  FOR Z=1 TO 5
  160. 1600  IF R1=0 AND RS*F*C<>0      THEN R1=1/(2*PI*F*C)-RS:RX=R1:GOSUB 180:R1=RX
  161. 1610  IF R2=0 AND G*R1*RS*F*C<>0 THEN R2=G*SQR((RS+R1)+1/((2*PI)^2*F^2*C^2)):RX=R2:GOSUB 180:R2=RX
  162. 1620  IF R3=0 AND R2<>0          THEN R3=R2:RX=R3:GOSUB 180:R3=RX
  163. 1630  IF G=0 AND R2*RS*R1*F*C<>0 THEN G=-R2/SQR((RS+R1)^2+1/((2*PI)^2*F^2*C^2))
  164. 1640  IF F=0 AND RS*R1*C<>0      THEN F=1/(2*PI*(RS+R1)*C)
  165. 1650  IF C=0 AND RS*R1*F<>0      THEN C=1/(2*PI*(RS+R1)*F)
  166. 1660  IF R1*R2*R3*C*F*G          THEN 1690
  167. 1670  NEXT Z
  168. 1680  RETURN
  169. 1690  VIEW PRINT 14 TO 24:CLS:VIEW PRINT:LOCATE 14
  170. 1700  PRINT " Source resistance...........";USING U$;RS;:PRINT " -"
  171. 1710  PRINT " R1..........................";USING U$;R1;:PRINT " -"
  172. 1720  PRINT " R2..........................";USING U$;R2;:PRINT " -"
  173. 1730  PRINT " R3..........................";USING U$;R3;:PRINT " -"
  174. 1740  PRINT " C1..........................";USING W$;C*10^6;:PRINT " mF"
  175. 1750  PRINT " Cutoff frequency............";USING W$;F/10^3;:PRINT " kHz"
  176. 1760  PRINT " Amplifier Gain..............";USING V$;G
  177. 1770  GOTO 2010
  178. 1780  '
  179. 1790  '.....non-inverting
  180. 1800  LOCATE 13:PRINT UL$;
  181. 1810  IF R1 THEN 1830
  182. 1820  INPUT "ENTER: Value of R1 in ohms.........................";R1:GOSUB 1880
  183. 1830  IF R2 THEN 1850
  184. 1840  INPUT "ENTER: Value of R2 in ohms.........................";R2:GOSUB 1880
  185. 1850  IF G THEN 1870
  186. 1860  INPUT "ENTER: Desired amplifier gain......................";G:GOSUB 1880
  187. 1870  VIEW PRINT 14 TO 24:CLS:LOCATE 14:GOTO 1810
  188. 1880  FOR Z=1 TO 4
  189. 1890  IF G=0 AND R1*R2<>0    THEN G=1+R2/R1
  190. 1900  IF R2=0 AND G*R1<>0    THEN R2=(G-1)*R1:RX=R2:GOSUB 180:R2=RX
  191. 1910  IF R1=0 AND G*R2<>0    THEN R1=R2/(G-1):RX=R1:GOSUB 180:R1=RX
  192. 1920  IF G*R1*R2             THEN 1950
  193. 1930  NEXT Z
  194. 1940  RETURN
  195. 1950  VIEW PRINT 15 TO 24:CLS:VIEW PRINT:LOCATE 15
  196. 1960  PRINT " R1..........................";USING U$;R1;:PRINT " -"
  197. 1970  PRINT " R2..........................";USING U$;R2;:PRINT " -"
  198. 1980  PRINT " Amplifier gain..............";USING V$;G
  199. 1990  GOTO 2010
  200. 2000  '
  201. 2010  '.....end
  202. 2020  LOCATE 22
  203. 2030  PRINT " Calculated resistors have been rounded-off to the nearest";
  204. 2040  PRINT " standard values"
  205. 2050  GOSUB 2090
  206. 2060  R1=0:R2=0:R3=0:C=0:F=0:G=0
  207. 2070  CLS:GOTO 310
  208. 2080  '
  209. 2090  'HARDCOPY
  210. 2100  GOSUB 2210:LOCATE 25,2:COLOR 14,6
  211. 2110  PRINT " Press 1 to print screen, 2 to print screen & ";
  212. 2120  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  213. 2130  Z$=INKEY$:IF Z$="3"THEN GOSUB 2210:RETURN
  214. 2140  IF Z$="1"OR Z$="2"THEN GOSUB 2210:GOTO 2160
  215. 2150  GOTO 2130
  216. 2160  FOR QX=1 TO 24:FOR QY=1 TO 80
  217. 2170  LPRINT CHR$(SCREEN(QX,QY));
  218. 2180  NEXT QY:NEXT QX
  219. 2190  IF Z$="2"THEN LPRINT CHR$(12)
  220. 2200  GOTO 2100
  221. 2210  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  222.